package capaPresentacion.client;

import java.util.Date;
import java.util.List;

import capaPresentacion.shared.ComentarioDTO;
import capaPresentacion.shared.InfoRutaDTO;
import capaPresentacion.shared.RutaDTO;
import capaPresentacion.shared.RutaFicheroDTO;
import capaPresentacion.shared.UsuarioDTO;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface WorldsTrainerWebServiceAsync {

	void loguearse(String usuario, String contrasenya,
			AsyncCallback<String> callback);

	void logout(AsyncCallback<Void> callback);

	void registrarse(UsuarioDTO usuarioDTO, AsyncCallback<Void> callback);

	void darseBaja(AsyncCallback<Void> callback);

	void hacerAmigo(String emailAmigo, AsyncCallback<Void> callback);

	void buscarUsuariosDTO(String cadena,
			AsyncCallback<List<UsuarioDTO>> callback);

	void obtenerAmigosDTO(AsyncCallback<List<UsuarioDTO>> callback);

	void hacerComentarioDTO(String texto, Date fecha, long idRuta,
			AsyncCallback<Void> callback);

	void borrarComentarioDTO(long idComentario, AsyncCallback<Void> callback);

	void quitarAmigo(String emailAmigo, AsyncCallback<Void> callback);

	void obtenerInfoRutasDTO(AsyncCallback<List<InfoRutaDTO>> callback);

	void anyadirRuta(RutaDTO rutaDTO, InfoRutaDTO infoRutaDTO,
			AsyncCallback<Void> callback);

	void eliminarInfo(long idInfoRuta, AsyncCallback<Void> callback);

	void buscarRuta(String cadena, AsyncCallback<List<RutaDTO>> callback);

	void obtenerInfoRuta(long idInfo,
			AsyncCallback<RutaFicheroDTO> callback);

	void obtenerComentariosRuta(long idRuta,
			AsyncCallback<List<ComentarioDTO>> callback);

	void borrarRuta(Long idRuta, AsyncCallback<Void> callback);

	void logoutAdministrador(AsyncCallback<Void> asyncCallback);

	void borrarUsuario(String email, AsyncCallback<Void> callback);

	void obtenerInfoRutasUsuarioAmigo(String email,
			AsyncCallback<List<InfoRutaDTO>> callback);

	void obtenerDatosRuta(long idRuta, AsyncCallback<RutaFicheroDTO> callback);

	void modificarUsuario(UsuarioDTO usuarioDTO, AsyncCallback<Void> callback);

	void obtenerUsuario(AsyncCallback<UsuarioDTO> callback);

	void obtenerEmailUsuario(AsyncCallback<String> callback);
}
